package com.ruoyi.system.domain.module.product;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;
import java.util.List;

/**
 * 订单对象 product_order
 *
 * @author ruoyi
 * @date 2021-08-11
 */
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("product_order")
public class ProductOrder implements Serializable {

    private static final long serialVersionUID=1L;

    /**
     * 订单ID
     */
    @TableId(value = "id")
    private Long id;

    /** 物业公司id*/
    private Integer propertyId;

    /** 小区id*/
    private Integer estateId;

	/** 商家id */
	private Integer merId;

	/**
	 *  来自平台 0 - 微信小程序
	 */
	private Integer platform;



	@Excel(name = "商家名称")
	@TableField(exist = false)
	private String shopName;

	/**
     * 订单号
     */
    @Excel(name = "订单号")
    private String orderNo;

	/**
	 * 预约姓名
	 */
	@Excel(name = "业主姓名")
	private String appointmentName;

	/**
	 * 预约手机号
	 */
	@Excel(name = "预约手机号")
	private String appointmentPhone;


	/**
	 * 预约地址
	 */
	@Excel(name = "地址")
	private String appointmentAddress;


    /**
     * 额外订单号
     */
    private String outTradeNo;

    /**
     * 订单类型  0 - 普通商品订单
     */
    private Integer orderType;

    /**
     * 用户id
     */
    private Long userId;

    /**
     * 用户姓名
     */
    private String realName;

    /**
     * 用户电话
     */
	@Excel(name = "业主电话")
    private String userPhone;


	@TableField(exist = false)
//	@Excel(name = "业主昵称")
	private String nickName;

    /**
     * 详细地址
     */
    private String userAddress;

    /**
     * 购物车id
     */
    private String cartId;

    /**
     * 运费金额
     */
    private BigDecimal freightPrice;

    /**
     * 订单商品总数
     */
    private Long totalNum;

    /**
     * 订单总价
     */
    @Excel(name = "订单总价")
    private BigDecimal totalPrice;

    /**
     * 邮费
     */
    private BigDecimal totalPostage;

    /**
     * 实际支付金额
     */
    @Excel(name = "支付金额")
    private BigDecimal payPrice;

    /**
     * 支付邮费
     */
    private BigDecimal payPostage;

    /**
     * 抵扣金额
     */
    private BigDecimal deductionPrice;

	private String transactionId;

    private String  refundOutTradeNo;

	/**
	 *  折扣
	 */
	private Double discountRate;
	/**
	 *  商家折扣 抵扣 掉的金额
	 */
	private BigDecimal discountDikouPrice;

    /**
     * 优惠券id
     */
    private Long couponId;

    /**
     * 优惠券金额
     */
    private BigDecimal couponPrice;

    /**
     * 支付状态
     */
    private Integer paid;

    /**
     * 支付时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date payTime;

    /**
     * 支付方式
     */
    private String payType;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * $column.columnComment
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 订单状态（-1 : 申请退款 -2 : 退货成功 0：待发货；1：待收货；2：已收货；3：已完成；-1：已退款）
     */
    private Integer status;

    /**
     * 0 未退款 1 申请中 2 已退款
     */
    private Integer refundStatus;

    /**
     * 退款图片
     */
    private String refundReasonWapImg;

    /**
     * 退款用户说明
     */
    private String refundReasonWapExplain;

    /**
     * 退款时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date refundReasonTime;

    /**
     * 前台退款原因
     */
    private String refundReasonWap;

    /**
     * 不退款的理由
     */
    private String refundReason;

    /**
     * 退款金额
     */
    private BigDecimal refundPrice;

    /**
     * 快递公司编号
     */
    private String deliverySn;

    /**
     * 快递名称/送货人姓名
     */
    private String deliveryName;

    /**
     * 发货类型
     */
    private String deliveryType;

    /**
     * 快递单号/手机号
     */
    private String deliveryId;

    /**
     * 消费赚取积分
     */
    private BigDecimal gainIntegral;

    /**
     * 使用积分
     */
    private BigDecimal useIntegral;

    /**
     * 给用户退了多少积分
     */
    private BigDecimal backIntegral;

    /**
     * 备注
     */
    private String mark;

    /**
     * 是否删除
     */
    private Integer isDel;

    /**
     * 唯一id(md5加密)类似id
     */
    private String uniqueValue;

	/**
	 *  商家抵扣券名称
	 */
	private String couponName;

	/**
	 * 商家抵扣券抵扣掉的金额
	 */
	private BigDecimal couponDikouPrice;

	/**
	 *  消费券id
	 */
	private Integer voucherId;

	/**
	 *  当前消费券可抵扣的金额
	 */
	private BigDecimal voucherDikouPrice;


	/**
	 *  用户使用的优惠券id
	 */
	private Integer userCouponId;
	/**
	 *  用户
	 */
	private BigDecimal userCouponPrice;
	/**
	 * 用户优惠券名称
	 */
	private String userCouponName;
	/**
	 *  用户优惠券抵扣掉的金额
	 */
	private BigDecimal userCouponDikouPrice;

	/**
	 * 是否核销  0 - 未核销 1 - 已核销
	 */
	private Integer isMerCheck;

	/**
	 * 核销申请时间
	 */
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date verifyRegTime;

	/**
	 * 核销码
	 */
	private String verifyCode;

	/**
	 * 核销时间
	 */
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date verifyTime;

    /**
     * 成本价
     */
    private BigDecimal cost;

    /**
     * 门店id
     */
    private Long storeId;

    /**
     * 配送方式 1=快递 ，2=门店自提
     */
    private Integer shippingType;

    /**
     * 支付渠道(0微信公众号1微信小程序)
     */
    private Integer isChannel;

    /**
     * $column.columnComment
     */
    private Integer isRemind;

    /**
     * $column.columnComment
     */
    private Integer isSystemDel;

    //业主分成比例
    private BigDecimal proprietorRate;
    //业主分成
    private BigDecimal proprietorSplit;
    //物业分成比例
    private BigDecimal propertyRate;
    //物业分成
    private BigDecimal propertySplit;
    //平台分成比例
    private BigDecimal platformRate;
    //平台分成
    private BigDecimal platformSplit;


	// 商家手续费 计算方式
	private Integer merSubType;
	// 商家手续费
//	@Excel(name = "商家手续费")
	private BigDecimal merFee;
	//商家结算金额
//	@Excel(name = "商家结算金额")
	private BigDecimal merSettlement;


    /**
     * 是否是预约订单
     */
    private Integer isAppointment;




    /**
     * 预约时间
     */
    private String appointmentTime;

	@Excel(name = "购买数量")
	@TableField(exist = false)
	private Integer counts;

    /**
     * 预约备注信息
     */
	@Excel(name = "备注")
	private String appointmentRemark;

	/**
	 * 清算状态 0 - 未清算  1 - 已清算
	 */
    private Integer settlementState;


	/**
	 * 管理员备注
	 */
//	@Excel(name = "备注信息")
	private String remark;

	/**
	 * 清算状态 0 - 未清算  1 - 清算时间
	 */
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date settlementTime;

	/**
	 *  是否需要核销  0 - 不需要 1 - 需要
	 */
	private Integer isNeedVerify;
	/**
	 *  订单的二维码
	 */
	private String qrCodeUrl;


    @TableField(exist = false)
    private String beginDate;

    @TableField(exist = false)
    private String endDate;

    //info 表的总价
    @TableField(exist = false)
    private BigDecimal totalMoney;

    //info 表的总价
    @TableField(exist = false)
    private Integer count;
    //info 表的总价
    @TableField(exist = false)
    private Integer isVerify;

    @TableField(exist = false)
    private String estateName;

    @TableField(exist = false)
    private String propertyName;

	@TableField(exist = false)
	private String deviceName;

    @TableField(exist = false)
    private Double pay;

	@TableField(exist = false)
	private Integer isShowInfo;



	@TableField(exist = false)
	private Boolean isCheck = false;

    @Excel(name = "订单时间")
    @TableField(exist = false)
    private String payTimes;

	@TableField(exist = false)
	private List<ProductOrderInfo> orderInfos;


}
